考題日期:2012/05/29
題號:10684
星等:2
語言:C++
題目:
題意:
一名賭徒想從連續的賭局中獲得最大的收益,在N局賭局中,求出連續的賭局最大可能贏的錢是多少。
如果輸入的資料不可能贏錢,則輸出 "Losing streak."
程式:
#include <iostream>
using namespace std;
int main()
{
int test;
while( cin >> test )
{
if( test == 0 )
break;
int arr[test];
int Max = -1, sum = 0;
for(int i = 0 ; i < test ; i++)
{
cin>>arr[i];
if( arr[i] > Max ) //若輸入的金額比最大可能獲得金額高,則最大可能獲得金額為輸入金額
Max = arr[i];
sum += arr[i]; //將輸入金額加入累計金額
if(sum < 0 ) //若累計金額為負數,代表輸錢,則歸零
sum = 0;
else if (sum > Max) //若累計金額超越最大可能獲得金額,則最大金額設為累計金額
Max = sum;
}
if(Max>0)
cout<<"The maximum winning streak is "<<Max<<"."<<endl;
else
cout<<"Losing streak."<<endl;
}
return 0;
}
測資: